import { defineStore } from "pinia";

interface TodoItem {
  id:number,
  title:string,
  isDone:boolean,
}

type TodoList = TodoItem[];

interface CounterStore{
  count:number;
  age:number;
  todoList:TodoList;
}

export const useCounterStore = defineStore(
  'counter',//模块名称:将来会在开发者调试工具中显示
  {
    //state必须写成函数行使，函数必须返回一个对象
    //对象就是整个模块管理的数据
    state:():CounterStore => {
      return {
        //基本数据类型不需要定义
        count:0,
        age:18,
        //但是一旦有引用数据类型，就需要定义类型
        todoList:[],
      };
    },

    //只读的计算属性数据
    getters:{
      oddOrEven(state){
        //return state.count %2 === 1 ? '奇数' ：'偶数';
        return (state.count & 1) === 1 ? '奇数' : '偶数';
      },
    },

    //所有的更新都要在action中完成
    actions:{
      //action接收n个参数，这n个参数都是外面传递的参数
      increment(...args:number[]) {
        console.log(args);
        //所有数据(state,getters,actions)都进行了数据代理，代理到this上，所以可以通过this直接访问
        this.count++;
      },
    },
    //pinia移除了mutation
    //mutation:{}
  },
);